home *** CD-ROM | disk | FTP | other *** search
/ .net - The Best of 1999/2000 / netCD Special01.iso / pc / Software / Dreamweaver / dreamw.exe / data1.cab / App_Files / Configuration / Objects / Common / E-Mail Link.js < prev    next >
Encoding:
JavaScript  |  1999-12-09  |  3.2 KB  |  98 lines

  1. // Copyright 1999 Macromedia, Inc. All rights reserved
  2.  
  3. var helpDoc = MM.HELP_objEMailLink;
  4.  
  5. //---------------   GLOBAL VARIABLES   ---------------
  6.  
  7. var gDialogShown = false;
  8. var gDefaultEmail = 'email@domain_name_here.com';
  9.  
  10. //---------------     API FUNCTIONS    ---------------
  11.  
  12. function objectTag() {
  13.   var EmailFld;
  14.   var InsertText;
  15.   
  16.   if (gDialogShown) {
  17.     EmailFld = document.MainForm.EmailFld.value;
  18.     InsertText = document.MainForm.TextFld.value;
  19.     // Save preferences.
  20.     savePreferences();
  21.   } else {
  22.     setPreferences();
  23.     EmailFld = document.MainForm.EmailFld.value;
  24.     if (!EmailFld) EmailFld = gDefaultEmail;
  25.     InsertText = document.MainForm.TextFld.value;
  26.     if (!InsertText) InsertText = EmailFld;
  27.   }
  28.   var rtnString = '<a href="mailto:' + EmailFld + '">' + InsertText + '<'+'/a>'
  29.  
  30.   var curDOM = dw.getDocumentDOM('document');
  31.   // Other Settings
  32.   if (isCurSelectionTextOnly(curDOM)) {
  33.     curDOM.insertHTML(rtnString, true); // Replaces current selection.
  34.     rtnString = ''; // Set return value to empty, tag already inserted.
  35.   }
  36.   gDialogShown = false; // Reset show dialog global.
  37.   return rtnString;
  38. }
  39.  
  40. //---------------    LOCAL FUNCTIONS   ---------------
  41.  
  42. // Description: Determines if the current selection is contained within a text node.
  43. // Parameters:  DOM - checked for valid, returns false if no DOM.
  44. function isCurSelectionTextOnly(curDOM) {
  45.   var rtnBool = false;
  46.   if (curDOM != null) {
  47.     var curNode = curDOM.getSelectedNode();
  48.     if (curNode.nodeType == Node.TEXT_NODE) { // Return true if we are a text node.
  49.       rtnBool = true;
  50.     } else { // Return true if the selection is contained within a single text node.
  51.       if (curNode.hasChildNodes() && curNode.childNodes[0].nodeType == Node.TEXT_NODE) {
  52.         var curSel = curDOM.getSelection();
  53.         var nodeOffset = dw.nodeToOffsets(curNode.childNodes[0]);
  54.         if  ((nodeOffset[0] <= curSel[0]) && (curSel[1] <= nodeOffset[1])) {
  55.           rtnBool = true;
  56.   } } } }
  57.   return rtnBool;
  58. }
  59.  
  60. function setPreferences() {
  61.   var metaFile, curVal;
  62.   if (typeof MMNotes == 'undefined') {return;} // Check for MMNotes extension.
  63.   metaFile = MMNotes.open(document.URL, false);
  64.   if (metaFile) {
  65.     // Form specific settings.
  66.     curVal = MMNotes.get(metaFile, 'MM_pref_E-Mail');
  67.     if (curVal) document.MainForm.EmailFld.value = curVal;
  68.     MMNotes.close(metaFile);
  69.   }
  70.   
  71.   var curDOM = dw.getDocumentDOM('document');
  72.   // Other Settings
  73.   if (isCurSelectionTextOnly(curDOM)) {
  74.     var curSel = curDOM.getSelection();
  75.     document.MainForm.TextFld.value = curDOM.documentElement.outerHTML.slice(curSel[0],curSel[1]);
  76.   }
  77. }
  78.  
  79. function savePreferences() {
  80.   if (typeof MMNotes == 'undefined') {return;} // Check for MMNotes extension.
  81.   var metaFile, curVal;
  82.   metaFile = MMNotes.open(document.URL, true);
  83.   if (metaFile) {
  84.     curVal = MMNotes.set(metaFile, 'MM_pref_E-Mail', document.MainForm.EmailFld.value);
  85.     MMNotes.close(metaFile);
  86.   }
  87. }
  88.  
  89. function initUI() {
  90.   // Initialize the form dialog.
  91.   // Set Saved Preferences.
  92.   setPreferences();
  93.  
  94.   document.MainForm.TextFld.focus(); //set focus on textbox
  95.   document.MainForm.TextFld.select(); //set insertion point into textbox
  96.   gDialogShown = true;
  97. }
  98.